UserProfileTabs.tsx 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. 'use client';
  2. import Link from 'next/link';
  3. import { useSelectedLayoutSegment } from 'next/navigation';
  4. type Props = {
  5. memberSID: string;
  6. };
  7. export default function UserProfileTabs({ memberSID }: Props) {
  8. const segment = useSelectedLayoutSegment();
  9. const tabs = [
  10. { key: null, label: '게시글', href: `/user/${memberSID}` },
  11. { key: 'comments', label: '댓글', href: `/user/${memberSID}/comments` },
  12. { key: 'feed', label: '피드', href: `/user/${memberSID}/feed` },
  13. { key: 'paper', label: '모의투자 성적', href: `/user/${memberSID}/paper` },
  14. { key: 'track-record', label: '예측 적중률', href: `/user/${memberSID}/track-record` }
  15. ];
  16. return (
  17. <nav className="user-profile__tabs" aria-label="프로필 탭">
  18. {tabs.map((tab) => {
  19. const active = segment === tab.key;
  20. return (
  21. <Link
  22. key={tab.label}
  23. href={tab.href}
  24. className={`user-profile__tab${active ? ' user-profile__tab--active' : ''}`}
  25. aria-current={active ? 'page' : undefined}
  26. >
  27. {tab.label}
  28. </Link>
  29. );
  30. })}
  31. </nav>
  32. );
  33. }